home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)zh.d64 / use'sound.proc < prev   
Text File  |  2007-03-01  |  4KB  |  143 lines

  1. 9000 // DELETE "@:USE'SOUND.PRC"
  2. 9001 //
  3. 9002 //   LIST   "USE'SOUND.PRC"
  4. 9003 //
  5. 9004 //////////////////////////////////
  6. 9005 // SOUND PROCEDURES FOR         //
  7. 9006 // CBM COMAL-80 VS 0.14         //
  8. 9007 // EMULATING SOUND PROCEDURES   //
  9. 9008 // IN VS 2.00, 2.01             //
  10. 9009 //                              //
  11. 9010 // BY DICK KLINGENS             //
  12. 9011 // (C) 1984 DUTCH COMAL USERS   //
  13. 9012 //          GROUP - THE HAGUE   //
  14. 9013 //////////////////////////////////
  15. 9014 //
  16. 9015 // EXAMPLE:
  17. 9016 //     RUN
  18. 9017 //     USE'SOUND
  19. 9018 //     INIT'VOICES
  20. 9019 //     NOTE(1,"C4")
  21. 9020 //     GATE(1,1)
  22. 9021 //     GATE(1,0)
  23. 9022 //     VOLUME(0)
  24. 9023 //
  25. 9024 // TRANSLATIONS:
  26. 9025 //
  27. 9026 // DUTCH --> ENGLISH
  28. 9027 //
  29. 9028 // STEM    -->   VOICE
  30. 9029 // STERKTE -->   LEVEL
  31. 9030 // JN      -->   YESNO
  32. 9031 // SRT     -->   TYPE
  33. 9032 // BASIS   -->   BASE
  34. 9033 // NOTEN   -->   NOTES
  35. 9034 // RIJ     -->   SEQUENCE
  36. 9035 //
  37. 9036 PROC ADSR(STEM,A,D,S,R) 
  38. 9037   P:=5+(STEM-1)*7
  39. 9038   POKE SID+P,A*16+D
  40. 9039   POKE SID+P+1,S*16+R
  41. 9040 ENDPROC ADSR
  42. 9041 //
  43. 9042 PROC VOLUME(STERKTE) 
  44. 9043   POKE SID+24,STERKTE
  45. 9044 ENDPROC VOLUME
  46. 9045 //
  47. 9046 PROC GATE(STEM,JN) 
  48. 9047   P:=4+(STEM-1)*7
  49. 9048   W:=CONTROL(STEM)
  50. 9049   IF JN THEN
  51. 9050     W:=W-(W MOD 2)+1
  52. 9051   ELSE 
  53. 9052     W:=W-(W MOD 2)
  54. 9053   ENDIF 
  55. 9054   POKE SID+P,W
  56. 9055   CONTROL(STEM):=W
  57. 9056 ENDPROC GATE
  58. 9057 //
  59. 9058 PROC SOUNDTYPE(STEM,SRT) 
  60. 9059   P:=4+(STEM-1)*7
  61. 9060   CONTROL(STEM):=2^(SRT+3)
  62. 9061   POKE SID+P,CONTROL(STEM)
  63. 9062 ENDPROC SOUNDTYPE
  64. 9063 //
  65. 9064 PROC USE'SOUND 
  66. 9065   SID:=54272
  67. 9066   FOR P:=0 TO 24 DO POKE SID+P,0
  68. 9067   //
  69. 9068   DIM NOTEN$ OF 3*96, VALUE(0:95)
  70. 9069   DIM CONTROL(3)
  71. 9070   //
  72. 9071   NR:=-1
  73. 9072   FOR OKT:=0 TO 7 DO
  74. 9073     RESTORE // BASIS
  75. 9074     FOR NT:=1 TO 12 DO
  76. 9075       NR:+1
  77. 9076       READ B
  78. 9077       W:=B/2^(7-OKT)
  79. 9078       VALUE(NR):=W
  80. 9079     ENDFOR NT
  81. 9080   ENDFOR OKT
  82. 9081   //
  83. 9082   FOR NT:=0 TO 95 DO
  84. 9083     READ NOTEN$(NT*3+1:NT*3+3)
  85. 9084   ENDFOR NT
  86. 9085   //
  87. 9086 BASIS:
  88. 9087   DATA 34334,36376,38539,40830
  89. 9088   DATA 43258,45830,48556,51443
  90. 9089   DATA 54502,57743,61176,64814
  91. 9090   //
  92. 9091 NOTENRIJ:
  93. 9092   DATA "C0","C0#","D0","D0#","E0","F0","F0#","G0","G0#","A0","A0#","B0"
  94. 9093   DATA "C1","C1#","D1","D1#","E1","F1","F1#","G1","G1#","A1","A1#","B1"
  95. 9094   DATA "C2","C2#","D2","D2#","E2","F2","F2#","G2","G2#","A2","A2#","B2"
  96. 9095   DATA "C3","C3#","D3","D3#","E3","F3","F3#","G3","G3#","A3","A3#","B3"
  97. 9096   DATA "C4","C4#","D4","D4#","E4","F4","F4#","G4","G4#","A4","A4#","B4"
  98. 9097   DATA "C5","C5#","D5","D5#","E5","F5","F5#","G5","G5#","A5","A5#","B5"
  99. 9098   DATA "C6","C6#","D6","D6#","E6","F6","F6#","G6","G6#","A6","A6#","B6"
  100. 9099   DATA "C7","C7#","D7","D7#","E7","F7","F7#","G7","G7#","A7","A7#","B7"
  101. 9100   //
  102. 9101 ENDPROC USE'SOUND
  103. 9102 //
  104. 9103 PROC NOTE(STEM,N$) 
  105. 9104   NR:=((N$ IN NOTEN$)-1)/3
  106. 9105   P:=(STEM-1)*7
  107. 9106   POKE SID+P,VALUE(NR) MOD 256
  108. 9107   POKE SID+P+1,VALUE(NR) DIV 256
  109. 9108 ENDPROC NOTE
  110. 9109 //
  111. 9110 PROC INIT'VOICES 
  112. 9111   ADSR(1,0,4,12,10)
  113. 9112   ADSR(2,10,8,10,9)
  114. 9113   ADSR(3,1,9,1,9)
  115. 9114   FOR STEM:=1 TO 3 DO
  116. 9115     PULSE(STEM,2048)
  117. 9116     SETFREQUENCY(STEM,0)
  118. 9117   ENDFOR STEM
  119. 9118   VOLUME(15)
  120. 9119   SOUNDTYPE(1,1)
  121. 9120   SOUNDTYPE(2,2)
  122. 9121   SOUNDTYPE(3,3)
  123. 9122 ENDPROC INIT'VOICES
  124. 9123 //
  125. 9124 PROC PULSE(STEM,F) 
  126. 9125   P:=2+(STEM-1)*7
  127. 9126   POKE SID+P,F MOD 256
  128. 9127   POKE SID+P+1,F DIV 256
  129. 9128 ENDPROC PULSE
  130. 9129 //
  131. 9130 PROC SETFREQUENCY(STEM,F) 
  132. 9131   P:=(STEM-1)*7
  133. 9132   POKE SID+P,F MOD 256
  134. 9133   POKE SID+P+1,F DIV 256
  135. 9134 ENDPROC SETFREQUENCY
  136. 9135 //
  137. 9136 PROC DISCARD 
  138. 9137   SID:=54272
  139. 9138   FOR P#:=0 TO 24 DO POKE SID+P#,0
  140. 9139 ENDPROC DISCARD
  141. 9140 //
  142. 9141 // END OF USE'SOUND
  143.